package com.shujia.method.homework;

import java.util.Scanner;

public class Exer6 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
//        if (num < 1 || num > 10) {
//            System.out.println("无效数据");
//        } else {
////            int result = jcDiGui(num);
//            int result = jc(num);
//            System.out.println(result);
//        }

        int result = jcDiGui(num);
        if(result == -1) {
            System.out.println("无效数据");
            return; // 直接使用return 语义跟清晰一些
        }
        // return 后面的代码不需要在使用if实现逻辑判断, 正常写后面的代码就可以了
        System.out.println("阶乘的结果:" + result);


    }

    // 非递归
    public static int jc(int num) {
        int result = 1;
        for (int i = num; i >= 1; i--) {
            result *= i;
        }
        return result;
    }

    /*
    编写Java程序，实现接收用户输入的正整数，输出该数的阶乘。
    要求：限制输入的数据在1-10之间，无效数据进行提示，结束程序。要求使用递归和循环分别实现。
     */
    public static int jcDiGui(int num) {
        if (num < 1 || num > 10) {
            return -1;
        }

        if (num == 1) {
            return 1;
        }
        return num * jcDiGui(num - 1);
    }
}
